package models

import (
	"fmt"

	"github.com/go-xorm/xorm"
)

type KLConfig struct {
	ID           int    `xorm:"id pk autoincr"`
	AccessToken  string `xorm:"access_token"`
	AppID        string `xorm:"appId"`
	GrantType    string `xorm:"grant_type"`
	ClientID     string `xorm:"client_id"`
	ClientSecret string `xorm:"client_secret"`
}

func (KLConfig) TableName() string {
	return "KLConfig"
}

func KLConfigInfo(db *xorm.Engine) (*KLConfig, error) {
	// queryklConfig := "select top 1 k.id,k.access_token,k.appId,k.grant_type,k.client_id,k.client_secret from KLConfig k order by id DESC "
	loggerl.Info("查询密钥")

	klConfig := &KLConfig{}
	db.Exec("USE PFlib;")
	has, err := db.OrderBy("id DESC").Get(klConfig)
	if err != nil {
		loggerl.Error(fmt.Sprintf("查询密钥信息失败: %s", err))
		return nil, err
	}

	if !has {
		loggerl.Error("查询密钥失败")
		return nil, err
	}
	loggerl.Info(fmt.Sprintf("查询密钥: %+v", klConfig))
	return klConfig, nil
}

// TODO update  KLConfig 表的 access_token。使用条件是id
func KLConfigUpdate(db *xorm.Engine, accessToken string, id int) error {
	query := fmt.Sprintf("update KLConfig set access_token='%s' where id='%d'", accessToken, id)
	loggerl.Info(fmt.Sprintf("更新密钥: %s", query))

	_, err := db.Exec(query)
	if err != nil {
		loggerl.Error(fmt.Sprintf("更新密钥失败: %s", err))
		return err
	}

	loggerl.Info("更新密钥成功")
	return nil
}
